//
//  HomeViewController.swift
//  SwiftSina
//
//  Created by 刘战军 on 16/5/10.
//  Copyright © 2016年 LiuZhanJun. All rights reserved.
//

import UIKit

// 定义可重用标识符
private let ID = "BaseTableViewControllerID"

class HomeViewController: BaseTableViewController {
    
    private lazy var dataList = [Int]()
    
    override func viewDidLoad() {
        
        // 准备刷新控件
        prepareRefeshControl()
        
        super.viewDidLoad()
        
         // 首页提示标签描述
        visitorView?.setupInfo(message: "关注这些人")
        
        // 在 viewDidLoad 中注册可重用ID
        tabView.registerClass(UITableViewCell.self, forCellReuseIdentifier: ID)
        
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        
        // 当视图销毁的时候, 应该将从网络加载的数据释放, 不应该再耗费内存
        // 图片不用管理, SDWebImage内部有缓存机制
        if self.view.window == nil {
            
            // 1.清理数组
            self.dataList.removeAll()
            // 2.重新加载数据
            self.loadData()
        }
    }
    
    override func loadData() {
        
        // 1.判断是否是上拉刷新, 如果上拉刷新动画启动,认为是上拉刷新
        // let isPullup = pullupView?.isAnimating()
        let isPullup = refresh.isPullupRefresh
        
        // 加载数据
        let defultIndex = 100
        
        // 异步加载线程
        dispatch_async(dispatch_get_global_queue(0, 0)) { () -> Void in
            
            // 让线程睡三秒
            // NSThread.sleepForTimeInterval(3.0)
            
            // let startIndex = self.dataList.first ?? defultIndex
            
            
            // 判断是否正在上拉刷新
            let pullup = self.pullupView.isAnimating() ?? false
            
            // 下拉索引
            let startIndex = pullup ? 0 : (self.dataList.first ?? defultIndex)
            
            // 上拉索引
            let pullupIndex = !pullup ? 0 : (self.dataList.last ?? 0)
            
            print("下拉索引\(startIndex) 上拉索引\(pullupIndex)")
            
            var arrayM = [Int]()
            
            // 下拉刷新
            if !isPullup {
                for i in (0..<10).reverse() {
                    
                    arrayM.append(i + startIndex + 1)
                    
                }
            }else { // 上拉刷新
                for i in (0..<10) {
                    
                    arrayM.append(pullupIndex - i - 1)
                    
                }

            }
            
            
            // 如果是上拉刷新, 就直接给数组中添加数据
            if isPullup {
                
                self.dataList += arrayM
            }else {
            
                self.dataList = arrayM + self.dataList
            }
            
            dispatch_async(dispatch_get_main_queue(), { () -> Void in
                
                // 关闭下拉刷新
                self.refresh.endRefreshing()
                
                // 关闭上拉刷新
                // self.pullupView.stopAnimating()
                
                // 刷新整个数据
                self.tabView.reloadData()
                
            })
            
        }
    }
    
}
// MARK: - 添加数据源, 代理方法
extension HomeViewController {
    
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return self.dataList.count
    }
    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        
        let cell = tabView.dequeueReusableCellWithIdentifier(ID, forIndexPath: indexPath)
        
        cell.textLabel?.text = dataList[indexPath.row].description
        
        return cell
        
    }
}
